package simulator;

import java.util.Random;

public class Illumination 
{
        //Variabler
	private int area; // hus størrelse i kvadratt meter
	private int type; // belysnings type
	private int lampLightFlux; // antall lumen fra en lys kilde
	private int powerConsumption; // strøm forbrukk av en lys kilde
	private double illuminance; // nødvendige belysnings level (var 50) og (500)
	private double numberOfSources; // antall av lys kilder
	private double lightFlux; // antall lumen som brukes til å belyse huset
	private double lightning; // antall energi som brukes til belysning
	private double lightningHour; // antall energi som brukes til belysning i en
									// time
	private int sTime; // starttid for simulering
        private int time; // antall timer simulering
	private int consumption; // stroem forbruk per kvadrat meter
	private Random rand;

        //end of variabler
        
        /**
         * Den konstruktoren skal brukes når vi beregner lys forbruk per time
         * @param _area - hus areal
         * @param _type - belysnings type
         * @param _illuminance - nødvendige belysnings level
         */
        public Illumination(int _area, int _type, double _illuminance)
        {
            area = _area;
            type = _type;
            illuminance = _illuminance;
        }

	/**
	 * Metode som beregner strøm forbruk for hus belysning
	 * @return antall energi som brukes til belysning
	 */
	public double Calculation() 
        {		
            lightFlux = illuminance * area;
            lampType();
            numberOfSources = (double) lightFlux / lampLightFlux;
            System.out.println("Number of light sources " + numberOfSources);
            lightning = powerConsumption * numberOfSources;
            return lightning;
	}

	public void setTime(int _sTime) 
        {
            sTime = _sTime;
	}

	/**
	 * Metode som innholder statistik for forskjelige belysnings type
	 */
	public void lampType() 
        {
            if (type == 1)// glødelamper
            {
		lampLightFlux = 1630;
		powerConsumption = 100;
            } 
            else if (type == 2)// lysstoffrør
            {
            	lampLightFlux = 2000;
		powerConsumption = 40;
            }
            else// halogenpærer
            {
		lampLightFlux = 1600;
		powerConsumption = 55;
            }
	}//end of lampType
        
        /**
         * Metode brukes til å beregne strøm forbruk for belysning per time
         * @return 
         */
        public double CalculationTime()
        {
            lightFlux = illuminance * area;
            lampType();
            numberOfSources = (double) lightFlux / lampLightFlux;
            lightningHour = powerConsumption * numberOfSources;
            return lightningHour;
        }//end of CalculationTime

        /*
	public double Demo() 
        {
		consumption = 24; // gjennomsnitt variabel (elektrooopvarming)
		lightning = consumption * area;
		return lightning;
	}
        
        public double varians()
        {
            double min, max;
            min = lightningHour * -0.05;
            max = lightningHour * 0.05;    
            double var = ((min) + (int)(Math.random() * (max - (min) + 1))); 
            return var;
        }
        */
        /*Gammel metode
	public double dayDemonstaration() 
        {
                Calculation();
		if (time >= 0 && time <= 5) {
			lightningHour = (lightning * 0.01);
                        lightningHour += varians();
		} else if (time >= 6 && time <= 8) {
			lightningHour = (lightning * 0.08);
                        lightningHour += varians();
		} else if (time >= 9 && time <= 14) {
			lightningHour = (lightning * 0.01);
                        lightningHour += varians();
		} else if (time >= 15 && time <= 17) {
			lightningHour = (lightning * 0.04);
                        lightningHour += varians();
		} else if (time >= 18 && time <= 22) {
			lightningHour = (lightning * 0.095);
                        lightningHour += varians();
		} else if (time >= 23 && time <= 24) {
			lightningHour = (lightning * 0.03);
                        lightningHour += varians();
		}
		return lightningHour;
	}
        */

}// end of Illumination
